1. Field of the Invention
The invention is generally related to graphics processing systems. In particular, the present invention is related to a method for performing an anti-aliasing operation in a graphics processing system that implements multiple graphics processing units (GPUs).
2. Background
A known method for increasing the processing power of a graphics processing system is to operate multiple graphics processing units (GPUs) or video processing units (VPUs) in parallel, wherein each processing unit communicates with the other(s) over a common bus. Herein, the terms GPU and VPU are used interchangeably. One advantage of a multi-GPU system is that it can leverage existing microprocessor technology to achieve increased performance, thereby providing a less expensive alternative to investing in a new, faster GPU. A multi-GPU system achieves increased performance by performing calculations on multiple graphics elements in parallel.
One example of the use of a graphics processing system that utilizes multiple GPUs to provide improved performance is described in commonly-owned, co-pending U.S. patent application Ser. No. 11/140,156, entitled “Antialiasing Method and System” to Preetham et al., filed May 27, 2005, the entirety of which is incorporated by reference herein. The aforementioned application describes, in part, a graphics processing system in which multiple GPUs are operated in parallel to perform antialiasing on the same graphics frame.
Aliasing is a well-known effect created by the appearance of undesired artifacts of the rendering process in a displayed frame. Edge aliasing is a particular type of aliasing that creates stair steps in an edge that should look smooth. An existing antialiasing technique for alleviating the effect of edge aliasing is multisampling. Multisampling addresses edge aliasing by obtaining multiple samples of pixels that are used to generate intermediate points between pixels. The samples (or “sub-pixels”) are averaged to determine the displayed pixel color value. The displayed edge in the multisampled image has a softened stair step effect.
The aforementioned U.S. patent application Ser. No. 11/140,156 describes a graphics processing system in which two GPUs each apply a different multisampling pattern to the same frame. That is, each GPU uses different sampling locations for sampling and rendering pixels in the same frame. The results of this sampling/rendering are then transferred across a bus (for example, a PCI-Express bus) from one GPU to the other, where the results are blended to generate a frame to be displayed. The end result is that the antialiasing sampling factor for the frame to be displayed is effectively doubled. For example, if each GPU performs 2× multisampling, the frame to be displayed includes 4× multisampling.
In regard to the foregoing method, the step in which the results are transferred across a bus from one GPU to another can create a bottleneck due to the limited amount of bandwidth available on the bus connecting the two GPUs. For example, in an implementation in which the bus is a PCI Express (PCIE) bus, bandwidth may be limited to about 1 Gigabit per second (Gb/sec). However, the amount of data being transferred across the bus in a system that implements this method is quite significant, particularly when the frame to be displayed is a high-resolution frame consisting of a large number of pixels. Furthermore, the foregoing method is inherently inefficient because, although multisampling-based antialiasing is a technique for edge enhancement, a significant amount of the data that is transferred between the two GPUs is not associated with edge pixels at all.
What is desired then is an improved method and apparatus for performing antialiasing in a graphics processing system that uses multiple GPUs. The improved method and apparatus should reduce the amount of data transferred between the multiple GPUs and/or improve the efficiency with which such data is transferred. The improved method and apparatus should further provide a means by which to distinguish between data that is associated with edge pixels and data that is not associated with edge pixels.